[1, 2, [3, 4]].flat()
// [1, 2, 3, 4] 将数组拉平

[1, 2, [3, [4, 5]]].flat()
// [1, 2, 3, [4, 5]]  只会拉平一层

[1, 2, [3, [4, 5]]].flat(2)
// [1, 2, 3, 4, 5]  传参数2拉平2层数组


[1, [2, [3]]].flat(Infinity)
// [1, 2, 3]  如果不管有多少层嵌套，都要转成一维数组，可以用Infinity关键字作为参数。


[1, 2, , 4, 5].flat()
// [1, 2, 4, 5]  如果原数组有空位， flat() 方法会跳过空位。


[2, 3, 4].flatMap((x) => [x, x * 2])
// [2, 4, 3, 6, 4, 8]  相当于 [[2,4], [4,6], [4,8]].flat()


// 相当于 [[[2]], [[4]], [[6]], [[8]]].flat()
[1, 2, 3, 4].flatMap(x => [
	[x * 2]
])
// [[2], [4], [6], [8]] flatMap() 只能展开一层数组。



//flatMap()方法的参数是一个遍历函数，该函数可以接受三个参数，分别是当前数组成员、当前数组成员的位置（从零开始）、原数组。
//flatMap()方法还可以有第二个参数，用来绑定遍历函数里面的this。